// app.js
const { apiService } = require('./utils/api')

App({
  onLaunch: function () {
    console.log('手工外发小程序启动')

    // 检查登录状态
    this.checkLoginStatus()

    // 获取系统信息
    this.getSystemInfo()
  },

  onShow: function() {
    console.log('小程序显示')
  },

  onHide: function() {
    console.log('小程序隐藏')
  },

  onError: function(msg) {
    console.error('小程序错误:', msg)
  },

  /**
   * 检查登录状态
   */
  checkLoginStatus() {
    const token = wx.getStorageSync('token')
    if (token) {
      apiService.setToken(token)
      // 验证token有效性
      this.validateToken()
    }
  },

  /**
   * 验证token有效性
   */
  validateToken() {
    apiService.getUserProfile()
      .then(() => {
        console.log('token有效，保持登录状态')
      })
      .catch((error) => {
        console.log('token无效，需要重新登录')
        this.clearLoginStatus()
      })
  },

  /**
   * 清除登录状态
   */
  clearLoginStatus() {
    apiService.clearToken()
    this.globalData.userInfo = null
    this.globalData.isLoggedIn = false
  },

  /**
   * 获取系统信息
   */
  getSystemInfo() {
    wx.getSystemInfo({
      success: (res) => {
        this.globalData.systemInfo = res
        console.log('系统信息:', res)
      }
    })
  },

  /**
   * 设置登录状态
   */
  setLoginStatus(userInfo, token) {
    this.globalData.userInfo = userInfo
    this.globalData.isLoggedIn = true
    apiService.setToken(token)
    wx.setStorageSync('userInfo', userInfo)
  },

  /**
   * 获取用户信息
   */
  getUserInfo() {
    return this.globalData.userInfo
  },

  /**
   * 检查是否已登录
   */
  isLoggedIn() {
    return this.globalData.isLoggedIn || false
  },

  /**
   * 获取当前用户角色
   */
  getUserRole() {
    const userInfo = this.getUserInfo()
    return userInfo ? userInfo.role : 'user'
  },

  /**
   * 检查是否为管理员
   */
  isAdmin() {
    const userInfo = this.getUserInfo()
    return userInfo && (userInfo.isAdmin === true || userInfo.role === 'admin')
  },

  globalData: {
    userInfo: null,
    isLoggedIn: false,
    systemInfo: null
  }
})
